const ffmpeg = require('fluent-ffmpeg')
const ffmpegPath = require('@ffmpeg-installer/ffmpeg')
const ffprobePath = require('@ffprobe-installer/ffprobe')
const path = require('path')
const fs = require('fs')

// 定义视频文件路径
ffmpeg.setFfmpegPath(ffmpegPath.path)
ffmpeg.setFfprobePath(ffprobePath.path)

function transformToHls (filePath, output) {
  return new Promise((resolve, reject) => {
    // 转换视频格式
    ffmpeg(filePath)
      .videoCodec('libx264') // 设置视频解码器
      .format('hls') // 输出视频格式
      .outputOptions('-hls_list_size 0') // -hls_list_size n:设置播放列表保存的最多条目，设置为0会保存有所片信息，默认值为5
      .outputOption('-hls_time 10') // -hls_time n: 设置每片的长度，默认值为2。单位为秒
      .output(output) // 输出文件
      .on('progress', (progress) => { // 监听切片进度
        console.log('Processing: ' + progress.percent + '% done')
      })
      .on('end', (res) => { // 监听结束
        console.log("视频切片完成", res)
        resolve(res)
      })
      .on('error', (error) => {
        reject(error)
      })
      .run(); // 执行
  })
}

module.exports = {
  transformToHls
}